TypeScript类(class)
抽象类
抽象类做为其它派生类的基类使用,它们一般不会直接被实例化,抽象类可以包含成员的实现细节。
abstract
关键字是用于定义抽象类和在抽象类内部定义抽象方法。
比如我们创建一个 Animal
抽象类:
abstract class Animal {
abstract makeSound(): void;
move(): void {
console.log('roaming the earch...');
}
}
我在实例化此抽象类会报错:

我们不能直接实例化抽象类,通常需要我们创建子类继承基类,然后可以实例化子类。
class Pig extends Animal {
makeSound() {
console.log('heng heng')
}
}
const pig = new Pig()
pig.makeSound()
pig.move()
访问限定符
传统面向对象语言通常都有访问限定符,TypeScript
中有三类访问限定符,分别是: public
、private
、protected
。
public
在 TypeScript 的类中,成员都默认为 public, 被此限定符修饰的成员是可以被外部访问。
class Car {
public run() {
console.log('启动...')
}
}
const car = new Car()
car.run()
private
当成员被设置为 private
之后, 被此限定符修饰的成员是只可以被类的内部访问。

protected
当成员被设置为 protected
之后, 被此限定符修饰的成员是只可以被类的内部以及类的子类访问。
class Car {
protected run() {
console.log('启动...')
}
}
class GTR extends Car {
init() {
this.run()
}
}
const car = new Car()
const gtr = new GTR()
car.run() // [ts] 属性“run”受保护,只能在类“Car”及其子类中访问。
gtr.init() // 启动...
gtr.run() // [ts] 属性“run”受保护,只能在类“Car”及其子类中访问。